package com.java.simple.study.juc.p4;

import com.java.simple.study.tool.Sleeper;

/**
 * @author zhoujunlin
 * @date 2022年06月07日 15:45
 * @desc
 */
public class CantStopThread {

    static /*volatile*/ boolean run = true;

    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            while (run) {
                // 线程将主存的run加载到工作内存中  即后续不在读取主存的数据
                // 使用System.out.println即使不用volatile关键字也可以看到run的修改 因为println里有对当前对象加synchronized关键字
                //System.out.println("hahhahahah");
            }
        });
        thread.start();

        // 主线程在一秒后 将run改为了false 但是thread却没有停止
        Sleeper.sleep(1);
        // 修改主存中的数据对线程的内存不可见
        run = false;

    }
}
